<?php
/**
 * Created by PhpStorm.
 * User: 17274
 * Date: 2018/3/27
 * Time: 21:06
 */
namespace app\admin\model;

use think\Model;
use think\Validate;
use think\Config;

class RoleModel extends  Model
{
    protected $table = 'yui_role';
    /*
     * rule
     * 验证data
     * @params $data
     * 新增和修改时验证
     * */
    public function validate_model($scene){
        $rule = [
        ];
        $msg = [
            'name.require' => '角色名不能为空!',
            'name.chsAlpha' => '角色名必须为字母或中文!'
        ];
        if ($scene=="edit"){
            $rule['name']='require|chsAlpha|token';
        }else if ($scene=="add"){
            $rule['name']='unique:role|require|chsAlpha|token';
            $msg['name.unique']='角色名已经存在!';
        }
        $data=input('post.');
        $validate = new Validate($rule, $msg);
        $result = $validate->check($data);
        if(!$result){
            return [
                'code'=>0,
                'text'=> $validate->getError()
            ];
        }
        return ['code'=>1];
    }

    /*
   * 根据ID获取角色信息
   * */
    public function getById($id){
        return $this->where(["id"=>$id])->find();
    }

    /*
    * 根据MAP获取角色信息
    * */
    public function getByMaps($map){
        return $this->where($map)->find();
    }

    /*
     * 角色列表
     * */
    public function listAll(){
       return $this->order('updated_at desc')->select();
    }

    /*
     * 角色是否启用
     * */
    public function isOn($role_id){
        $data=$this->where('role_id',$role_id)->find();
        return $data->status;
    }

    /*
     * 新增角色
     * */
    public function add(){
        $data=input('post.');
        $data['role_id']=md5(time());
        $data['created_at']=time();
        $data['updated_at']=time();
        unset($data['__token__']);
        if($this->save($data)){
            $params=[
                Config::get('op_type')[0],
                Config::get('op_module')[1],
                Config::get('op_text')[1],
                $data['name']
            ];
            tag('logs_db',$params);
            return op_success();
        }else{
            return op_fail();
        }
    }

    /*
     * 修改角色
     * */
    public function edit(){
        $data=input('post.');
        unset($data['__token__']);
        $id=input('post.id/d');
        if ($id!=Config::get('superadminID')){
            if($this->where('id',$id)->update($data)){
                $params=[
                    Config::get('op_type')[1],
                    Config::get('op_module')[1],
                    Config::get('op_text')[1],
                    $data['name']
                ];
                tag('logs_db',$params);
                return op_success();
            }else{
                return op_fail();
            }
        }else{
            return op_superadmin();
        }
    }

    /*
     * 删除角色
     * */
    public function del(){
        $ids=input('post.ids/a');
        $op_name=[];
        foreach ($ids as $id){
            array_push($op_name,$this->getById($id)->toArray()['name']);
        }
        if (!in_array(Config::get('superadminID'),$ids)){
            if ($this->destroy($ids)){
                $params=[
                    Config::get('op_type')[2],
                    Config::get('op_module')[1],
                    Config::get('op_text')[1],
                    implode(",", $op_name)
                ];
                tag('logs_db',$params);
                return op_success();
            }else{
                return op_fail();
            }
        }
        return op_superadmin();
    }

}